package guda.house.dal.dao;

import guda.grape.autogen.common.page.BaseQuery;
import guda.house.dal.dataobject.BillElecDO;
import guda.house.dal.dataobject.BillEstateDO;
import guda.house.dal.dataobject.BillWaterDO;

import java.util.Date;
import java.util.List;

public interface BillWaterDAO {


    Long insert(BillWaterDO billWater);


    BillWaterDO getBillWaterById(Long recordId);


    boolean delBillWaterById(Long recordId);

    List<BillWaterDO> getBillWaterByIds(List idsList);

    /**
     * 清空测试用例加入的autoincrement
     */
    void cleanAutoIncrement(Long recordId);

    List<BillWaterDO> selectForPage(BaseQuery baseQuery);

    int countForPage(BaseQuery baseQuery);

    void updateByIdSelective(BillWaterDO billWater);

    List<BillWaterDO> getBill(Long suiteId, Integer recordYear, Integer recordMonth);

    List<BillWaterDO> selectForUnpay(BaseQuery baseQuery);

    int countForUnpay(BaseQuery baseQuery);

    Long statBill(List<Long> suitIdList,String gmtDate,Integer isPayed);


    Long statBillRate(List<Long> suitIdList,String gmtStart, String gmtEnd,Integer isPayed);

    List<BillWaterDO> getByPayId(long payId);


    BillWaterDO queryLatest(Long suiteId);

    Long statDichanDiscount(List<Long> suiteIdList,String gmtDate);

    Long statSelfDiscount(List<Long> suiteIdList,String gmtDate);

    List<BillWaterDO> statLastBill(List<Long> suiteIdList,Integer isPayed);

    List<BillWaterDO> getBillList(List<Long> suitIdList,Date gmtStart,Date gmtEnd,Integer isPayed);

    List<BillWaterDO> getBillByYear(List<Long> suitIdList,Integer recordYear,Integer isPayed);


    Long statBillByYear(List<Long> suitIdList,Integer year,Integer isPayed);

    Long statPaidBill(List<Long> billIdList);

}
